package com.demo.core.service.base;

import com.demo.core.dao.base.support.ResultSearchResult;
import com.demo.core.dao.base.support.SearchArgumentSupport;
import com.demo.core.model.Audit;

/**
 * 配置服务接口
 * 
 * @author ryuu.kk
 *
 */
public interface AuditService {
	
	/**
	 * 存储Audit模型
	 * 如果配置AuditItem存在时,
	 * 将AuditItem持久化。
	 * @param audit audit模型对象
	 * @return 主键ID
	 */
	Long save(Audit audit);
	
	/**
	 * 判断Audit模型是否存在
	 * @param id 主键ID
	 * @return 是否存在
	 */
	boolean exists(Long id);
	
	/**
	 * 删除配置信息
	 * @param id 配置ID
	 */
	void delete(Long id);
	
	/**
	 * 取得配置属性
	 * @param auditId 配置ID
	 * @return 配置模型对象
	 */
	Audit find(Long auditId);
	
	/**
	 * 分页查询站点审计列表
	 * @param siteId 站点ID
	 * @param args SearchArgumentSupport
	 * @return ResultSearchResult<Audit>
	 */
	ResultSearchResult<Audit> search(Long siteId, SearchArgumentSupport args);
	
	/**
	 * 分页查询站点审计列表
	 * @param siteId 站点ID
	 * @param type 审计所记录的在操作业务中的类型:如会员,项目,文档等
	 * @param args SearchArgumentSupport
	 * @return ResultSearchResult<Audit>
	 */
	ResultSearchResult<Audit> search(Long siteId, String type, SearchArgumentSupport args);
	
	/**
	 * 分页查询站点审计列表
	 * @param siteId 站点ID
	 * @param userName 操作用户
	 * @param type 审计所记录的在操作业务中的类型:如会员,项目,文档等
	 * @param args SearchArgumentSupport
	 * @return ResultSearchResult<Audit>
	 */
	ResultSearchResult<Audit> search(Long siteId, String userName, String type, SearchArgumentSupport args);
}
